package movilmax.sia_corp.action;

import java.util.LinkedList;
import java.util.Map;

import utilidades.Cadena;

import movilmax.sia_corp.model.Clientes;
import movilmax.sia_corp.model.ContratoDet;
import movilmax.sia_corp.model.Contratos;
import movilmax.sia_corp.model.Pagos;
import movilmax.sia_corp.model.Usuario;

import apli.conectar.Conectar;
import apli.procesos.Auditar;
import apli.procesos.PWimax;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RegistrarVenta extends ActionSupport{
	private static final long serialVersionUID = 1398394520165965231L;
	
	private Clientes cliente;
	private Contratos contrato;
	private ContratoDet detalle;
	private Pagos pago;
	
	private String cod_cliente;
	private String ncontrato;
	private String cod_factura;
	private String tp_contrato;
	private String con_base;
	
	@SuppressWarnings("rawtypes")
	public String guardar() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if (USUARIO!=null){	
	    	Conectar BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String IDENTIFICACION=this.getCliente().getTipodoc()+this.getCliente().getIdentificacion() ;
	    			String COD_CLIENTE="-1",CONTRATO="",COD_FACTURA="",NRO_CONTROL="",NRO_FACTURA="",SUCURSAL=USUARIO.getSucursal().getCod();
	    			
	    			if(this.getCliente().getApellidos()==null ){
	    				this.getCliente().setApellidos("");
	    			}
	    			if(this.getCliente().getFnacimiento() ==null ){
	    				this.getCliente().setFnacimiento("01/01/1990");
	    			}
	    			String ID_AUD = (String)session.get("ses_auditoria");
					Auditar AUD = new Auditar(BASE.getBaseDatos());
	    			String SQL="Select C.codigo From clientes C where C.identificacion='"+IDENTIFICACION+"' ";
	    			AUD.GuardaHistorial(ID_AUD, "VERIFICAR_CLIENTE", SQL);
	    			Resultado RCS=BASE.getBaseDatos().consultar(SQL);
	    			if(RCS.RP ){
	    				COD_CLIENTE=RCS.getCadena("codigo");
	    				RCS.liberar();
	    				SQL = "UPDATE clientes set telefono='"+this.getCliente().getTel1()+"',telefono_oficina='"+this.getCliente().getTel2()+"',celular='"+this.getCliente().getTel3()+"',email='"+this.getCliente().getEmail()+"',ciudad='"+this.getCliente().getCiudad() +"',zona='"+this.getCliente().getZona()+"',avcalle='"+this.getCliente().getDireccion()+"',des_inmuemble='"+this.getCliente().getNombreinmue()+"',nro_inmueble='"+this.getCliente().getNumeroinmue() + "',piso_inmueble='"+this.getCliente().getPisoinmue() +"'," +
	    				      "tipoinmueble='"+this.getCliente().getTipoinmueble()+"',municipio='"+this.getCliente().getCod_municipio()+"',fnacimiento='"+this.getCliente().getFnacimiento()+"' "+
	    				      "Where codigo='"+COD_CLIENTE+ "' ";
	    				 AUD.GuardaHistorial(ID_AUD, "ACTUALIZAR_CLIENTE", SQL);
	    			}else{
	    				COD_CLIENTE=BASE.getBaseDatos().generarCodigo("clientes", "codigo");
	    				SQL= "INSERT INTO clientes(codigo,docid,nombres,apellidos,telefono,telefono_oficina,celular,fax,email,paginaweb,ciudad,zona,des_inmuemble,nro_inmueble,piso_inmueble,avcalle,tipodoc,tipoinmueble,sexo,municipio,status,fnacimiento,identificacion ) "+
	    				     "VALUES ('"+COD_CLIENTE+"','"+ this.getCliente().getIdentificacion() +"','" +this.getCliente().getNombres() + "','"+this.getCliente().getApellidos() + "','"+this.getCliente().getTel1()+"','"+this.getCliente().getTel2()+"','"+this.getCliente().getTel3()+"','0','"+this.getCliente().getEmail()+ "','www.w.com','"+this.getCliente().getCiudad() +"','"+this.getCliente().getZona()+"','"+this.getCliente().getNombreinmue()  + "','"+this.getCliente().getNumeroinmue() + "','"+this.getCliente().getPisoinmue() +"','"+this.getCliente().getDireccion()+"','" + this.getCliente().getTipodoc() + "','" +this.getCliente().getTipoinmueble()+ "','M','" +this.getCliente().getCod_municipio()+"','SIN PROCESAR','"+this.getCliente().getFnacimiento()+"','"+IDENTIFICACION+ "' )";
	    				AUD.GuardaHistorial(ID_AUD, "INSERTAR_CLIENTE", SQL);
	    			}
	    			if(BASE.getBaseDatos().ejecutar(SQL) ){ // si crea o actualiza el cliente....
	    				SQL="INSERT INTO clientes_x_empresa (cliente,empresa,fecha_registro,usuario_registro,hora_registro,status) VALUES ('"+COD_CLIENTE+"','1','"+ F.getFecha()+"','"+ USUARIO.getUsuario()+ "','"+F.getHoras()+"','SIN PROCESAR'  )";
	    				BASE.getBaseDatos().ejecutar(SQL);
	    				PWimax PW=new PWimax(BASE.getBaseDatos());	
	    				String con_c=PW.generarCodigoContrato(this.getContrato().getTipo());
	    				if(con_c.equals("-1")){
	    					this.addActionError("No se pudo generar el numero de contrato");
	    					return ERROR;
	    				}
	    				if(getContrato().getTipo_recurrente()==null){
	    					getContrato().setTipo_recurrente("1");
	    				}
	    				Cadena C=new Cadena();
	    				String CUENTA_CONTABLE="",NRO_ORDEN="";
	    				String cmd_inst_dc="",cmd_inst_dv="",cmd_inst1="",cmd_inst2="";
	    				
	    				if(this.getContrato().getTipo().equals("PREPAGO")){
	    					CONTRATO="201"+C.llenarCad(con_c,7,"0");
	    					CUENTA_CONTABLE="1.1.22.07.0001";
	    			        cmd_inst_dc = ",municipio,tipoinmueble,ciudad,zona,avcalle,des_inmuemble,nro_inmueble,piso_inmueble";
	    			        cmd_inst_dv = ",'"+ getCliente().getCod_municipio()+"','"+ getCliente().getTipoinmueble() + "','"+getCliente().getCiudad()+"','"+ getCliente().getZona() +"','"+ getCliente().getDireccion() + "','"+this.getCliente().getNombreinmue()  +"','"+this.getCliente().getNumeroinmue() +"','"+getCliente().getPisoinmue() +"' ";
	    				}else if(this.getContrato().getTipo().equals("POSTPAGO") ){
	    					CONTRATO="M-"+C.llenarCad(con_c,8,"0");	
	    					CUENTA_CONTABLE="1.1.22.06."+C.subCadena(CONTRATO,6,10);
	    					cmd_inst_dc = ",municipio,tipoinmueble,ciudad,zona,avcalle,des_inmuemble,nro_inmueble,piso_inmueble";
	    			        cmd_inst_dv = ",'"+getContrato().getCod_municipio()+"','"+getContrato().getTipoinmueble() + "','"+getContrato().getCiudad()+"','"+getContrato().getZona() +"','"+ getContrato().getDireccion() + "','"+getContrato().getNombreinmue()  +"','"+getContrato().getNumeroinmue() +"','"+getContrato().getPisoinmue() +"' ";	
	    				}else if(this.getContrato().getTipo().equals("PYME") ){
	    					CONTRATO="P-"+C.llenarCad(con_c,8,"0");
	    					CUENTA_CONTABLE="1.1.22.10."+C.subCadena(CONTRATO,6,10);
	    					cmd_inst_dc = ",municipio,tipoinmueble,ciudad,zona,avcalle,des_inmuemble,nro_inmueble,piso_inmueble";
	    			        cmd_inst_dv = ",'"+ getContrato().getCod_municipio()+"','"+ getContrato().getTipoinmueble() + "','"+getContrato().getCiudad()+"','"+getContrato().getZona() +"','"+getContrato().getDireccion() + "','"+getContrato().getNombreinmue()  +"','"+getContrato().getNumeroinmue() +"','"+getContrato().getPisoinmue() +"' ";
	    				}
	    				String cvalx=BASE.getBaseDatos().existeDato_("contratos","contrato",CONTRATO);
	    				if(!cvalx.equals("NO-EXISTE")){
	    				    this.addActionError("CONTRATO: "+CONTRATO+" ya esta registrado");
	    					return ERROR;
	    				}
	    				cmd_inst1 = ",banco,tipotarjeta,numerotarjeta,vencetarjeta,cedula_tarjeta,titular_tarjeta ";
	    				if(getContrato().getTipo_recurrente().equals("2") ){
	    					String fvence="";
	    					if(getContrato().getVence1().length()==1 ){
	    						fvence="0"+getContrato().getVence1();
	    					}else{
	    						fvence=getContrato().getVence1();
	    					}
	    					fvence=fvence+"/"+C.subCadena(getContrato().getVence2(),2,4);
	    					cmd_inst2 = ",'"+getContrato().getBanco()+"','"+ getContrato().getTipo_tarjeta() +"','"+getContrato().getNtarjeta()  +"','"+fvence+"','"+ getContrato().getTipo_doc()+getContrato().getNtitular()  +"','"+getContrato().getNnomape() + "' ";
    			        }else{
    			        	cmd_inst2 = ",'0','','','','','' ";	
    			        }
	    				NRO_ORDEN=BASE.getBaseDatos().generarCodigo("contratos", "nr_orden");
	    				SQL="INSERT INTO contratos(contrato,cliente,cuentacontable,vendedor,empresa,registrado_en,impresiones,fecha,tipo,status,tipo_recurrente,fecha_registro,hora_registro,usuario_registro,nro_orden,ctd,obs" + cmd_inst_dc + cmd_inst1 +") " +
	    			         "VALUES ('"+CONTRATO+"','"+COD_CLIENTE+"','"+CUENTA_CONTABLE+"','"+USUARIO.getCod_vendedor()+"','1','"+ SUCURSAL +"','0','" + getContrato().getFecha_contrato() + "','"+ getContrato().getTipo()+ "','ACTIVO','"+ getContrato().getTipo_recurrente()+"','"+F.getFecha() +"','" +F.getHoras()+ "','"+ USUARIO.getUsuario() + "','"+NRO_ORDEN+"','"+con_c+ "','REGISTRADO VIA WEB' " + cmd_inst_dv + cmd_inst2 + " ) ";
	    				AUD.GuardaHistorial(ID_AUD, "INSERTAR_CONTRATO", SQL);
	    				if(BASE.getBaseDatos().ejecutar(SQL) ){ // si crea el contrato
	    					SQL="INSERT INTO detalle_contrato (contrato,mac,servicio,promocion,facturado,status,promo_consumida) VALUES ('"+CONTRATO+"','"+ getDetalle().getMac() +"','"+ getDetalle().getCod_servicio() +"','"+getDetalle().getPromocion()+"','1','0','1' )";
	    					AUD.GuardaHistorial(ID_AUD, "INSERTAR_DETALLE_CONTRATO", SQL);
	    					if(BASE.getBaseDatos().ejecutar(SQL) ){ // si crea el detalle
	    						COD_FACTURA=BASE.getBaseDatos().generarCodigo("facturas_wmx","codigo"); 
	    						NRO_CONTROL = PW.generarNumeroControl(SUCURSAL);
	    					    NRO_FACTURA = PW.generarNumeroFactura(SUCURSAL);
	    						SQL = "INSERT INTO facturas_wmx(codigo,doc_afecta,nro_factura,nro_control,contrato,obs,fecha,status,tipo_doc,sucursal,fecha_registro,fecha_retencion,fecha_ciclo,vence,hora_registro,usuario_registro,usuario_pago,tt_iva,tt_neto,tt_descuento,tt_retension,saldo,tipo_ingreso,empresa) " +
	    						      "VALUES ('"+COD_FACTURA+"','"+COD_FACTURA+"','"+NRO_FACTURA+"','"+NRO_CONTROL+"','"+CONTRATO+ "','FACTURA GENERADA AUTOMATICAMENTE X VENTA EN STANDS','"+F.getFecha()  +"','2','FAC','"+SUCURSAL+"','"+ F.getFecha() +"','"+ F.getFecha() +"','"+ F.getFecha() +"','"+ F.getFecha() +"','"+ F.getHoras() +"','" + USUARIO.getUsuario() + "','"+ USUARIO.getUsuario() +"','" + getPago().getTot_iva().replace(",",".") +"','" + getPago().getTot_neto().replace(",",".") + "','0','0','0','1','1' ) ";
	    						AUD.GuardaHistorial(ID_AUD, "INSERTAR_FACTURA", SQL);
	    						if(BASE.getBaseDatos().ejecutar(SQL) ){ // si crea la factura
	    							BASE.getBaseDatos().ejecutar("UPDATE contadores_factxsuc SET ctd_factura=ctd_factura+1,ctd_control=ctd_control+1 from sucursales S where S.cod='"+SUCURSAL+"' and S.contador=contadores_factxsuc.cod ");
	    							//inicio registro detalle
	    							String DESCRIPCION= getDetalle().getDes_prod()+"-"+ getDetalle().getSerial() ;
	    							Fecha FX =new Fecha(getContrato().getFecha_contrato() );
	    							if(getContrato().getTipo_recurrente().equals("2")){
	    								  DESCRIPCION=DESCRIPCION+" ( DOMICILIACION T/C )";
	    							}
	    							SQL = "INSERT INTO detalle_facturas_wmx(nro_factura,articulo,cantidad,monto_base,alicuota,descuento,serial,sub_det,orden,mes,anno)"+
	    							      "VALUES ('"+COD_FACTURA+"','" + getDetalle().getCod_prod()  +"','1','"+getPago().getNeto_prod().replace(",",".")+ "','12','0','"+getDetalle().getSerial()+"','"+DESCRIPCION+"','0','0','"+FX.getAnno()+"' ) ";
	    							AUD.GuardaHistorial(ID_AUD, "INSERTAR_ITEM_DFACTURA", SQL);
	    							BASE.getBaseDatos().ejecutar(SQL);
	    							if(getContrato().getTipo().equals("PREPAGO")){
	    								DESCRIPCION="RECARGA "+ getDetalle().getDes_servicio() ;
	    							}else{
	    								if(C.convertirInt( getPago().getDiasp())==C.convertirInt( FX.buscarDiasMes(FX.getMes() ))) {
	    								      DESCRIPCION="SERVICIO PLAN "+ getDetalle().getDes_servicio()+" CORRESPONDIENTE AL MES DE "+FX.buscarNombreMes(FX.getMes()).toUpperCase()+" DE "+FX.getAnno();
	    								 }else{
	    									  DESCRIPCION="SERVICIO PLAN "+getDetalle().getDes_servicio()+" CORRESPONDIENTE AL MES DE "+FX.buscarNombreMes(FX.getMes()).toUpperCase()+" DE "+FX.getAnno()+" [ "+getPago().getDiasp()+" DIAS ]";	
	    								 }
	    							}
	    							SQL = "INSERT INTO detalle_facturas_wmx(nro_factura,articulo,cantidad,monto_base,alicuota,descuento,serial,sub_det,orden,mes,anno)"+
	    							      "VALUES ('"+COD_FACTURA+"','" +getDetalle().getCod_servicio() +"','1','"+ getPago().getNeto_serv().replace(",",".")+ "','12','0','"+ getDetalle().getCod_servicio() +"','"+DESCRIPCION+"','1','"+ FX.getMes() +"','"+FX.getAnno()+"' ) ";
	    							AUD.GuardaHistorial(ID_AUD, "INSERTAR_ITEM_DFACTURA", SQL);
	    							BASE.getBaseDatos().ejecutar(SQL);
	    							if(!getPago().getTot_acce().equals("0,00") ){
	    								SQL = "INSERT INTO detalle_facturas_wmx(nro_factura,articulo,cantidad,monto_base,alicuota,descuento,serial,sub_det,orden,mes,anno)"+
	  	    							      "VALUES ('"+COD_FACTURA+"','264','1','"+ getPago().getNeto_acce().replace(",",".")+ "','12','0','BASE_CPE001','BASE PARA CPE OUTDOOR','3','0','"+FX.getAnno()+"' ) ";
	    								AUD.GuardaHistorial(ID_AUD, "INSERTAR_ITEM_DFACTURA", SQL);
	  	    							BASE.getBaseDatos().ejecutar(SQL);
	    							}
	    							//fin registro detalle
	    							//inicio registro pago
	    							LinkedList lst_for=C.tokens(getPago().getForma(),",");
	    	  		    	    	LinkedList lst_mon=C.tokens(getPago().getMonto(),",");
	    	  		    	    	LinkedList lst_nro=C.tokens(getPago().getNro_aprobacion(),",");
	    	  		    	    	LinkedList lst_ban=C.tokens(getPago().getBanco(),",");
	    	  		    	    	int i=0;
	    	  		    	    	try{
		    	  		    	    	for(i=0; i<lst_for.size();i++){
		    	  		    	    		String fpa=getItemX(lst_for,i); 
		    	  		    	    		String mon=getItemX(lst_mon,i); 
		    	  		    	    		String nro=getItemX(lst_nro,i); 
		    	  		    	    		String ban=getItemX(lst_ban,i); 
		    	  		    	    		if(nro.length()>0 ){
		    	  		    	    			nro=nro.replace(",",".");
		    	  		    	    		}
		    	  		    	    		if(ban.equals("-1") || ban.equals("") ){
		    	  		    	    			ban="0";
		    	  		    	    		}
		    	  		    	    		double vlre=C.convertirDoble(mon);
		    	  		    	    		if(!fpa.equals("-1") && vlre>0 ){
		    	  		    	    			SQL = "INSERT INTO detalle_pagos_factura_wmx(factura,forma_pago,monto,nro_transaccion,nro_conformacion,nro_comprobante,banco,punto_venta,fecha,hora,fecha_registro,hora_registro,usuario_registro,sucursal_pago,exportado) "+
		    	  		    	    				  "VALUES ('"+COD_FACTURA+"','"+fpa+"','"+mon+"','"+nro+"','','0','"+ban+"','0','"+F.getFecha() +"','"+ F.getHoras() +"','"+F.getFecha()+"','"+F.getHoras()+ "','"+USUARIO.getUsuario() +"','"+SUCURSAL+"','0' ) ";
		    	  		    	    			AUD.GuardaHistorial(ID_AUD, "INSERTAR_PAGO_FACTURA", SQL);
		    		  	  		    	        BASE.getBaseDatos().ejecutar(SQL);
		    	  		    	    		}
		    	  		    	    	}
	    	  		    	    	}catch(Exception err){
	    	  		    	    		this.addActionMessage("Error en el pago="+err.getMessage() );
	    	  		    	    	}
	    	  		    	    	//fin registro pago
	    	  		    	    	//descontar del inventario
		    	  		   				String por_serial="1",por_wimax="1";
		    	  		   				String COD_INVENTARIO=BASE.getBaseDatos().generarCodigo("inventario","codigo");
		    	  		   				SQL = "INSERT INTO inventario(codigo,codigo_factura,observaciones,tipo,sucursal,porserial,wimax,fecha_ingreso,fecha_registro,hora_registro,usuario_registro,empresa) VALUES ('"+COD_INVENTARIO+"','"+COD_FACTURA+"','REBAJA AUTOMATICA POR VENTA WIMAX','0','"+SUCURSAL+"','"+por_serial+"','"+por_wimax+ "','"+F.getFecha()+"','"+F.getFecha()+"','"+F.getHoras()+"','sistema','1' ) ";
		    	  		   			    AUD.GuardaHistorial(ID_AUD, "REBAJAR_INVENTARIO_P", SQL);
		    	  		   				BASE.getBaseDatos().ejecutar(SQL);
		    	  		   				SQL = "INSERT INTO detalle_inventario(inventario,producto,cantidad,serial,status_stock) VALUES ('"+COD_INVENTARIO+"','"+ getDetalle().getCod_prod() +"','1','" +getDetalle().getSerial()+"','VENDIDO' ) ";
		    	  		   				AUD.GuardaHistorial(ID_AUD, "REBAJAR_INVENTARIO_D", SQL);
		    	  		   				BASE.getBaseDatos().ejecutar(SQL);
		    	  		   				SQL="update detalle_inventario set status_stock='VENDIDO' where serial='"+getDetalle().getSerial()  +"' ";
		    	  		   			    AUD.GuardaHistorial(ID_AUD, "ACTUALIZAR_D_INVENTARIO", SQL);
		    	  		   				BASE.getBaseDatos().ejecutar(SQL);
		    	  		   				SQL="update dispositivos set status_stock='VENDIDO' where mac='"+ getDetalle().getMac()  +"' ";
		    	  		   			    AUD.GuardaHistorial(ID_AUD, "ACTUALIZAR_STX_DISPOSITIVOS", SQL);
		    	  		   				BASE.getBaseDatos().ejecutar(SQL);
		    	  		   			    if(!getPago().getTot_acce().equals("0,00") ){	
		    	  		   					   por_serial="0";	
		    	  		   					   String COD_INVENTARIO2=BASE.getBaseDatos().generarCodigo("inventario","codigo");
		    	  		   					   SQL = "INSERT INTO inventario(codigo,codigo_factura,observaciones,tipo,sucursal,porserial,wimax,fecha_ingreso,fecha_registro,hora_registro,usuario_registro,empresa) VALUES ('"+COD_INVENTARIO2+"','"+COD_FACTURA+"','REBAJA AUTOMATICA VENTA','0','"+SUCURSAL+"','"+por_serial+"','0','"+ F.getFecha() +"','"+F.getFecha()+"','"+F.getHoras() +"','sistema','1' ) ";
		    	  		   					   AUD.GuardaHistorial(ID_AUD, "INSERTAR_INVENTARIOP_R", SQL);
		    	  		   					   BASE.getBaseDatos().ejecutar(SQL); 
		    	  		   					   String SERIAL_2="BASE_CPE001";
		    	  		   					   SQL = "INSERT INTO detalle_inventario(inventario,producto,cantidad,serial,status_stock) VALUES ('"+COD_INVENTARIO+"','264','1','" +SERIAL_2+"','VENDIDO' ) ";
		    	  		   					   AUD.GuardaHistorial(ID_AUD, "INSERTAR_INVENTARIOD_R", SQL);
		    	  		   					   BASE.getBaseDatos().ejecutar(SQL);
		    	  		   			   }
	    	  		    	    	//fin descontar inventario
	    	  		    	    	//insertar recarga
	    	  		    	    	if(getContrato().getTipo().equals("PREPAGO")){
	    	  		    	    		String COD_RECARGA = BASE.getBaseDatos().generarCodigo("recargas", "codigo");
	    	  							String FECHA_VENCE = F.agregar(1,2);
	    	  							String NRO_RECARGA = PW.generarNumeroRecarga(SUCURSAL);
	    	  							SQL = "INSERT INTO recargas(codigo,factura,vencimiento,status,nro_orden,nro_recarga) VALUES ('"+COD_RECARGA+"','"+COD_FACTURA+"','" +FECHA_VENCE+"','1','0','" +NRO_RECARGA+ "' ) ";
	    	  							AUD.GuardaHistorial(ID_AUD, "INSERTAR_RECARGA_P", SQL);
	    	  							BASE.getBaseDatos().ejecutar(SQL);
	    	  							SQL = "INSERT INTO detalle_recarga(recarga,mac,servicio,base,iva,sub_det,vence) VALUES ('"+COD_RECARGA+"','"+getDetalle().getMac()+ "','"+ getDetalle().getCod_servicio() +"','"+getPago().getNeto_serv().replace(",",".")+"','"+getPago().getIva_serv().replace(",",".")+"','RECARGA PLAN "+ getDetalle().getDes_servicio()+"','"+FECHA_VENCE+"' ) ";
	    	  							AUD.GuardaHistorial(ID_AUD, "INSERTAR_RECARGA_D", SQL);
	    	  							BASE.getBaseDatos().ejecutar(SQL);
	    	  							BASE.getBaseDatos().ejecutar("update sucursales set ctd_rec=ctd_rec+1 where cod='"+SUCURSAL+"' ");
	    	  		    	    	}
	    	  		    	    	PW.activarDispositivo(CONTRATO,getContrato().getTipo() ,getDetalle().getMac(),getDetalle().getCod_servicio(),USUARIO.getUsuario()  );
	    	  		    	    	this.setCod_cliente(COD_CLIENTE);
	    	  		    			this.setNcontrato(CONTRATO);
	    	  		    			this.setCod_factura(COD_FACTURA);
	    	  		    			this.setTp_contrato(getContrato().getTipo());
	    	  		    			this.addActionMessage("Cliente registrado con el codigo="+COD_CLIENTE+", Contrato="+CONTRATO+" ,Procesado a las "+FECHA+" "+HORA);
	    	  		    			BASE.getBaseDatos().cerrarConexion();
	    	  		    			return SUCCESS;
	    						}else{
	    							this.addActionError("No se pudo registrar la factura....");  
	    						}
	    					}else{
	    						this.addActionError("No se pudo registrar detalle del contrato....");  
	    					}
	    				}else{
	    				   this.addActionError("No se pudo registrar el contrato....");  
	    				}
	    			}else{
	    				this.addActionError("No se pudo registrar el cliente....");  
	    			}
	    			BASE.getBaseDatos().cerrarConexion();
	    			return ERROR;
	    		}catch(Exception err){
	    			err.printStackTrace();
	    			this.addActionError(err.toString());
	    		}
	    		BASE.getBaseDatos().cerrarConexion();
	    	}else
	  			 this.addActionError("No hay conexion al servidor");  
	    }else
  		    this.addActionError("La sesion del usuario ha caducado");   	
    	
	    return ERROR;
	}
	  
    @SuppressWarnings("rawtypes")
	private String getItemX(LinkedList lst_,int indx){
       String itm="";
       try{
    	   itm=lst_.get(indx).toString().trim();	
       }catch(Exception err){
    			
       }
    	return itm;
    }
	public Clientes getCliente() {
		return cliente;
	}
	public void setCliente(Clientes cliente) {
		this.cliente = cliente;
	}
	public Contratos getContrato() {
		return contrato;
	}
	public void setContrato(Contratos contrato) {
		this.contrato = contrato;
	}
	public ContratoDet getDetalle() {
		return detalle;
	}
	public void setDetalle(ContratoDet detalle) {
		this.detalle = detalle;
	}
	public Pagos getPago() {
		return pago;
	}
	public void setPago(Pagos pago) {
		this.pago = pago;
	}
	public String getNcontrato() {
		return ncontrato;
	}
	public void setNcontrato(String ncontrato) {
		this.ncontrato = ncontrato;
	}
	public String getCod_factura() {
		return cod_factura;
	}
	public void setCod_factura(String cod_factura) {
		this.cod_factura = cod_factura;
	}
	public String getCod_cliente() {
		return cod_cliente;
	}
	public void setCod_cliente(String cod_cliente) {
		this.cod_cliente = cod_cliente;
	}
	public String getTp_contrato() {
		return tp_contrato;
	}
	public void setTp_contrato(String tp_contrato) {
		this.tp_contrato = tp_contrato;
	}
	public String getCon_base() {
		return con_base;
	}
	public void setCon_base(String con_base) {
		this.con_base = con_base;
	}
	
	
}
